<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>面向文档 | Elasticsearch: 权威指南 | Elastic</title>
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
</head>
<body>
<div class="main-container">
    <section id="content">
        
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原文地址: <a href="https://www.elastic.co/guide/cn/elasticsearch/guide/current/_document_oriented.html" rel="nofollow">https://www.elastic.co/guide/cn/elasticsearch/guide/current/_document_oriented.html</a>, 版权归 www.elastic.co 所有<br/>
                            英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/guide/current/_document_oriented.html" rel="nofollow">https://www.elastic.co/guide/en/elasticsearch/guide/current/_document_oriented.html</a>
                            </div>
                        <!-- start body -->
                  <div class="page_header">
<b>请注意:</b><br>本书基于 Elasticsearch 2.x 版本，有些内容可能已经过时。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch: 权威指南</a></span>
»
<span class="breadcrumb-link"><a href="getting-started.html">基础入门</a></span>
»
<span class="breadcrumb-link"><a href="intro.html">你知道的, 为了搜索…​</a></span>
»
<span class="breadcrumb-node">面向文档</span>
</div>
<div class="navheader">
<span class="prev">
<a href="_talking_to_elasticsearch.html">« 和 Elasticsearch 交互</a>
</span>
<span class="next">
<a href="_finding_your_feet.html">适应新环境 »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="_document_oriented"></a>面向文档 (Document Oriented)<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elasticsearch-cn/elasticsearch-definitive-guide/edit/cn/010_Intro/20_Document.asciidoc">edit</a>
</h2>
</div></div></div>
<p>在应用程序中对象很少只是一个简单的键和值的列表。通常，它们拥有更复杂的数据结构，可能包括日期、地理信息、其他对象或者数组等。</p>

<p>迟早你会想把这些对象存储在数据库中。

使用关系型数据库的行和列存储，这相当于是把一个表现力丰富的对象塞到一个非常大的电子表格中：为了适应表结构，你必须设法将这个对象扁平化 —​ 通常一个字段对应一列 —​ 而且每次查询时又需要将其重新构造为对象。</p>

<p>Elasticsearch 是 <em>面向文档</em> 的，意味着它存储整个对象或 <em>文档</em>。Elasticsearch 不仅存储文档，而且 <em>索引</em> 每个文档的内容，使之可以被搜索。

在 Elasticsearch 中，我们对文档进行索引、搜索、排序和过滤 — ​而不是对一行一行的列数据。这是一种完全不同的思考数据的方式，也是 Elasticsearch 能支持复杂的全文搜索的原因。</p>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_json"></a>JSON<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elasticsearch-cn/elasticsearch-definitive-guide/edit/cn/010_Intro/20_Document.asciidoc">edit</a>
</h3>
</div></div></div>
<p>Elasticsearch 使用 JavaScript Object Notation（或者 <a href="http://en.wikipedia.org/wiki/Json" class="ulink" target="_top"><em>JSON</em></a>）作为文档的序列化格式。JSON 序列化为大多数编程语言所支持，并且已经成为 NoSQL 领域的标准格式。
它简单、简洁、易于阅读。</p>
<p>下面这个 JSON 文档代表了一个 user 对象：</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">{
    "email":      "john@smith.com",
    "first_name": "John",
    "last_name":  "Smith",
    "info": {
        "bio":         "Eco-warrior and defender of the weak",
        "age":         25,
        "interests": [ "dolphins", "whales" ]
    },
    "join_date": "2014/05/01"
}</pre>
</div>
<p>虽然原始的 <code class="word">user</code> 对象很复杂，但这个对象的结构和含义在 JSON 版本中都得到了体现和保留。在 Elasticsearch 中将对象转化为 JSON 以便构建索引 要比转换一个扁平的表结构的等效过程简单的多。</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>几乎所有的语言都有可以将任意的数据结构或对象转化成 JSON 格式的模块，只是细节各不相同。具体请查看 <em>序列化(serialization)</em> 或者 <em>marshalling</em> 这两个处理 JSON 的模块。官方 <a href="https://www.elastic.co/guide/en/elasticsearch/client/index.html" class="ulink" target="_top">Elasticsearch 客户端</a> 自动为您提供 JSON 转化。</p>
</div>
</div>
</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="_talking_to_elasticsearch.html">« 和 Elasticsearch 交互</a>
</span>
<span class="next">
<a href="_finding_your_feet.html">适应新环境 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>